<?php  
function page($count,$page_size,$btn_num,$page='page'){
	if(!isset($_GET[$page])||!is_numeric($_GET[$page])||$_GET[$page]<1){
		$_GET[$page]=1;
	}
	if($count==0){
		$data=array(
			'limit'=>'',
			'html'=>''
		);
		return $data;
	}
	$current_url=$_SERVER['REQUEST_URI'];//获取当前的url
	$arr_url=parse_url($current_url);//将url拆分成path(url地址)和query(参数部分)两部分存在数组里
	$current_path=$arr_url['path'];//将不带参数的url地址保存
	if(isset($arr_url['query'])){	//判断是否带有参数
		parse_str($arr_url['query'],$arr_query);
		unset($arr_query[$page]);
		if(empty($arr_query)){	//判断是否带有多个参数
			$url="{$current_path}?{$page}=";
		}else{
			$other=http_build_query($arr_query);
			$url="{$current_path}?{$other}&{$page}=";
		}
	}else{
		$url="{$current_path}?{$page}=";
	}
	//动态limit查询
	$limit_start=($_GET[$page]-1)*$page_size;
	$limit="limit {$limit_start},{$page_size}";
	$html=array();
	$page_num_all=ceil($count/$page_size);//向上取整 获取总的页面数
	if($btn_num>$page_num_all){
		$btn_num=$page_num_all;
	}
	$num_left=floor(($btn_num-1)/2);//向下取整 获取当前位置(设置在中间位置)的左边按钮个数
	$start=$_GET[$page]-$num_left;
	if($start<1){
		$start=1;
	}elseif($start>($page_num_all-$btn_num+1)){
		$start=$page_num_all-$btn_num+1;
	}
	for($i=0;$i<$btn_num;$i++){
		if($start==$_GET[$page]){
			$html[$start]="<li><span class='page-active'>{$start}</span></li>";
		}else{
			$html[$start]="<li><a href='{$url}{$start}'>{$start}</a></li>";
		}
		$start++;
	}
	if(count($html)>3){ //当按钮数大于3个时才加省略
		reset($html);
		$key_first=key($html);
		end($html);
		$key_end=key($html);
		if($key_first!=1){
			//向数组前面删除
			array_shift($html);
			//向数组前面添加
			array_unshift($html,"<li><a href='{$url}1'>1...</a></li>");
		}elseif($key_end!=$page_num_all){
			//向数组后面删除
			array_pop($html);
			//向数组后面添加
			array_push($html, "<li><a href='{$url}{$page_num_all}'>...{$page_num_all}</a></li>");
		}
	}
	{	//设置上一页和下一页
		if($_GET[$page]!=1){
			$prev=$_GET[$page]-1;
			array_unshift($html,"<li><a href='{$url}{$prev}'>&laquo;</a></li>");//数组前加上一页
		}
		if($_GET[$page]!=$page_num_all){
			$next=$_GET[$page]+1;
			array_push($html,"<li><a href='{$url}{$next}'>&raquo;</a></li>");//数组后加下一页
		}
	}
	$html=implode(' ',$html);
	$data=array(
		'limit'=>$limit,
		'html'=>$html
	);
	return $data;
}

?>